import faiss
import numpy as np

# 生成示例数据
d = 64  # 向量维度
n = 1000  # 向量数量
xb = np.random.random((n, d)).astype('float32')  # 数据库向量

# 创建 Faiss 索引
index = faiss.IndexFlatL2(d)  # 使用 L2 距离的扁平索引
print(index.is_trained)  # 输出 True，因为 IndexFlatL2 不需要训练

# 添加向量到索引
index.add(xb)
print(index.ntotal)  # 输出 1000，即添加到索引中的向量数量

# 生成查询向量
nq = 10  # 查询向量数量
xq = np.random.random((nq, d)).astype('float32')

# 进行最近邻搜索
k = 4  # 每个查询向量要查找的最近邻数量
D, I = index.search(xq, k)  # D 是距离矩阵，I 是索引矩阵
print("最近邻的索引：")
print(I[:5])  # 输出前 5 个查询向量的最近邻索引
print("最近邻的距离：")
print(D[:5])  # 输出前 5 个查询向量的最近邻距离